import store from '@/store'
import {
	baseUrl,
	getStorageUserId
} from '@/utils/config.js'

// 此vm参数为页面的实例，可以通过它引用vuex中的变量
module.exports = (vm) => {
	// 初始化请求配置
	uni.$u.http.setConfig((config) => {
		/* config 为默认全局配置*/
		config.baseURL = baseUrl; /* 根域名 */
		return config
	})

	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
		// 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
		config.data = config.data || {}
		if (config.custom.loading !== false) {
			uni.showLoading({
				title: config.custom?.loadingTitle ?? '正在加载',
				mask: true
			})
		}

		// 请求前加入Token: 
		config.header['Authorization'] = getStorageUserId()

		config.header['refereeId'] = uni.getStorageSync('referee_id') ? uni.getStorageSync('referee_id') : 0
		//referee_id
		// 请求前加入当前终端
		config.header['platform'] = store.getters.platform
		config.header['content-type'] = "application/x-www-form-urlencoded"

		return config
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})

	// 响应拦截
	uni.$u.http.interceptors.response.use((response) => {
		uni.hideLoading()
		/* 对响应成功做点什么 可使用async await 做异步操作*/

		const data = response.data

		if (data.status !== 200) {

		}

		return data
	}, (response) => {
		// 对响应错误做点什么 （statusCode !== 200）
		return Promise.reject(response)
	})
}